iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Modern Web

API 101:從基礎認識到應用的全方位指南-Swagger/Postman系列 第 11

DAY11. 如何整合 Swagger 與 CI/CD 工具

  • 分享至 

  • xImage
  •  

整合 Swagger 和 CI/CD(持續整合/持續部署)工具可以讓 API 文件自動生成、測試和部署的過程更加流暢和自動化。

Swagger 文件的生成和版本控制

  • 自動生成 Swagger 文件:
    可以使用 Swagger 或 OpenAPI 工具來自動從代碼中生成 API 文檔。大多數框架(如 Spring Boot、Django、Express.js 等)都有 Swagger 插件或庫來支持這一功能。

  • 版本控制:
    將自動生成的 Swagger 文件(通常是 swagger.json 或 openapi.yaml 文件)提交到版本控制系統(如 Git),這樣每次代碼變更都會自動更新 API 文檔。

CI 流程中的 Swagger 測試

  • API 測試與驗證:
    在 CI 流程中,可以使用 Postman、Newman 或 Swagger 的測試工具來自動運行 API 測試,驗證 API 是否符合 Swagger 文檔中的定義。這可以確保每次提交的 API 變更都能通過測試。

  • Linting Swagger 文件:
    可以在 CI 流程中運行 Swagger Linter 工具,來確保 Swagger 文件的結構正確並符合規範。

自動部署 Swagger 文檔

  • 自動生成並部署到 Swagger UI:
    在 CI/CD 的部署階段,通過自動化腳本,可以將 Swagger 文件部署到 Swagger UI 或其他 API 文檔展示工具。這樣開發者或客戶端可以隨時查看最新的 API 文檔。

  • 集成 Swagger Hub:
    如果你使用 Swagger Hub 來管理 API 文檔,可以將它與 CI/CD 管道集成,讓每次 API 的代碼變更都能自動更新 Swagger Hub 上的文檔。

CI/CD 工具的整合

常見的 CI/CD 工具如 Jenkins、GitLab CI、GitHub Actions 等都支持自定義腳本來執行上述步驟:

  • **Jenkins:**可以在 Jenkins pipeline 中設置生成 Swagger 文檔的步驟,並在測試階段驗證 API。

  • **GitLab CI:**可以使用 GitLab CI pipelines 來自動生成和驗證 Swagger 文檔,並將文檔部署到相關的服務。

  • **GitHub Actions:**可以設置 GitHub Actions 來在每次提交時運行 API 測試和文檔生成流程。


自動化工作流程示例

name: CI/CD for API

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm run test

      - name: Generate Swagger documentation
        run: npm run generate-swagger

      - name: Deploy Swagger documentation
        run: npm run deploy-swagger

這個 CI/CD 工作流程範例主要展示了如何使用 GitHub Actions 來整合 Swagger 文檔生成、自動測試和部署。讓我們逐步解析每個部分:

name: CI/CD for API

這行代碼為整個工作流程指定了一個名稱。在 GitHub Actions 的執行列表中會顯示這個名稱,幫助我們區分不同的工作流程。

on:
  push:
    branches:
      - main
  • on 指的是當某些條件滿足時,這個工作流程會被觸發。
  • 在這裡,定義了當有代碼被推送(push)到 main 分支時,觸發該工作流程。
  • 這是典型的 CI/CD 設定方式,表示當主分支更新後,自動開始測試和部署流程。
jobs:
  build:
    runs-on: ubuntu-latest
  • jobs 定義了工作流程中需要執行的作業(jobs)。這裡的build是一個作業名稱。
  • runs-on: ubuntu-latest 表示這個作業會在最新的 Ubuntu 操作系統環境上運行。
steps:
  - name: Checkout code
    uses: actions/checkout@v2
  • steps 是指作業中的具體步驟。
  • 第一步是「Checkout code」,它會將最新的代碼從 GitHub 存儲庫拉取到運行環境。這一步使用了 actions/checkout@v2,它是 GitHub Actions 的官方步驟,用來檢查代碼。
    yaml
  - name: Set up Node.js
    uses: actions/setup-node@v2
    with:
      node-version: '14'
  • 第二步是設置 Node.js 環境,這對於運行 JavaScript/Node.js 應用程序是必要的。
  • uses: actions/setup-node@v2 是官方的 Node.js 設置操作。這裡指定了使用版本 14 的 Node.js。
  - name: Install dependencies
    run: npm install
  • 第三步是安裝依賴,這一步會運行 npm install,確保應用程序的所有依賴項都被安裝,這是運行應用或測試所必須的
  - name: Run tests
    run: npm run test
  • 第四步運行測試。npm run test 會執行項目中的自動化測試,確保 API 的功能沒有問題。這是 CI 流程中非常關鍵的一部分,用於驗證 API 的正確性。
  - name: Generate Swagger documentation
    run: npm run generate-swagger
  • 第五步是生成 Swagger 文檔。這裡使用 npm run generate-swagger 命令(假設在項目配置中有這樣一個腳本),它通常會從代碼中自動生成 Swagger/OpenAPI 規範的文檔,常見於 swagger.jsonopenapi.yaml 文件。
  - name: Deploy Swagger documentation
    run: npm run deploy-swagger
  • 第六步是部署 Swagger 文檔。這步會運行 npm run deploy-swagger,用來自動將生成的 Swagger 文檔部署到特定服務或網站,比如 Swagger UI、Swagger Hub 或公司內部文檔平台。

  • 當有代碼被推送到main分支後,這個工作流程會自動執行:
  1. 檢查代碼。
  2. 設置 Node.js 環境。
  3. 安裝項目依賴。
  4. 運行單元測試,確保 API 功能正常。
  5. 生成 API 的 Swagger 文檔。
  6. 部署最新的 Swagger 文檔。

這是一個典型的 CI/CD 流程範例,它不僅確保 API 代碼的質量,還能自動生成並部署 API 文檔,讓開發者和使用者都能及時獲取最新的 API 定義。


上一篇
DAY10. 如何在 Swagger 中進行 API 的安全測試
下一篇
DAY12. Postman初步認識
系列文
API 101:從基礎認識到應用的全方位指南-Swagger/Postman30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言